【问题标题】:php split string based on words [closed]基于单词的php拆分字符串[关闭]
【发布时间】:2014-10-28 13:40:49
【问题描述】:

我有一个这样的 PHP 字符串

$string = 'Nunc sagittis in orci in pharetra. Mauris orci mauris, tincidunt in nisi quis, bibendum facilisis lectus. Sales Center Hours Donec nec tristique neque. In hac habitasse platea dictumst. Cras sit amet mauris lorem.';

我正在尝试将此字符串拆分为 2(可以接受数组)我正在尝试拆分,因此我的第一个字符串包含销售中心营业时间之前的所有内容,第二个字符串包含销售中心营业时间以及之后的所有内容。

【问题讨论】:

  • 您是否尝试过正则表达式来解决您的问题/?
  • 我不擅长正则表达式
  • @user979331:那么现在是学习的好时机……你同意吗?
  • 这并不难。你有头脑是有原因的。

标签: php arrays string


【解决方案1】:

您是否正在寻找类似的结果?如果是,您可以使用以下代码:

Array ( 
    [0] => Nunc sagittis in orci in pharetra. Mauris orci mauris, tincidunt in nisi quis, bibendum facilisis lectus. 
    [1] => Sales Center Hours Donec nec tristique neque. In hac habitasse platea dictumst. Cras sit amet mauris lorem. 
)

代码:

<?php
$string = 'Nunc sagittis in orci in pharetra. Mauris orci mauris, tincidunt in nisi quis, bibendum facilisis lectus. Sales Center Hours Donec nec tristique neque. In hac habitasse platea dictumst. Cras sit amet mauris lorem.';

$split_by = 'Sales Center Hours';
$split_data = explode($split_by, $string);
$split_data[1] = $split_by . $split_data[1];
print_r ($split_data);
?>

如果在文本中没有找到 $split_by,那会给我们带来意想不到的结果。为了优雅地管理它,您可以执行以下操作:

<?php
$string = 'Nunc sagittis in orci in pharetra. Mauris orci mauris, tincidunt in nisi quis, bibendum facilisis lectus. Sales Center Hours Donec nec tristique neque. In hac habitasse platea dictumst. Cras sit amet mauris lorem.';

$split_by = 'Bad text';
$split_data = explode($split_by, $string);

// confirm that the string was split into two. If it did, 
// add the split_by text to the front of the 2nd item (index 1)
if (count($split_data) === 2) {
    $split_data[1] = $split_by . $split_data[1];
}

// do something with the text
print_r ($split_data);
?>

【讨论】:

  • 这不起作用:未定义的偏移量:1
  • @user979331 我添加了一种防御手段来处理可能给你未定义偏移量的代码
【解决方案2】:

正则表达式版本

preg_match( '/(.*)\s+(Sales Center Hours.*)/', $string, $matches );

echo( $matches[1] ); // before
echo( $matches[2] ); // after

【讨论】:

  • 这不起作用:注意:未定义的偏移量:1 和注意:未定义的偏移量:2
  • 嗯,我已经在你提供的字符串上检查过了。
  • 是的,你的代码是正确的......我如何让它与其中包含代码的字符串一起工作,比如

  • 你能举一个这样的字符串的例子吗?
【解决方案3】:

您可以使用分解字符串,然后将用于分解的字符串添加到数组元素中。

<?php
$stringToSplit = "Sales Center Hours";
$string = 'Nunc sagittis in orci in pharetra. Mauris orci mauris, tincidunt in nisi quis, bibendum facilisis lectus. Sales Center Hours Donec nec tristique neque. In hac habitasse platea dictumst. Cras sit amet mauris lorem.';
$arr = explode($stringToSplit, $string);
$arr[1] = $stringToSplit . $arr[1];
print_r($arr)
?>

【讨论】:

    【解决方案4】:

    “爆炸”功能可以做到这一点.. 类似于以下内容:

    $string = "Nunc sagittis in orci in pharetra. Mauris orci mauris, tincidunt in nisi quis, bibendum facilisis lectus. Sales Center Hours Donec nec tristique neque. In hac habitasse platea dictumst. Cras sit amet mauris lorem.";
    $separator="Sale Centre Hours";
    $results=explode($separator,$string);
    $firstString=$results[0];
    $secondString=$separator.$results[1];
    

    【讨论】:

      【解决方案5】:

      你可以使用php函数拆分http://php.net/manual/es/function.split.php,你必须识别模式

      【讨论】:

        猜你喜欢
        • 2014-07-31
        • 1970-01-01
        • 1970-01-01
        • 2016-12-04
        • 1970-01-01
        • 1970-01-01
        • 2016-12-31
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多