我的字符串$ content 1stText 2ndText 3rdText 4thText, 5thText, 6thText
存在这个奇怪的问题,我无法用字符替换空格。主要目的是我必须将我的字符串放在数组中,之后每个元素都会有自己的名字。但是,当我从其他网站解析数据时,请坚持下去:
if ($child->nodeName == "div"){
$textContentArray = preg_split('/\n/', $child->textContent);
$counter = 0;
$counter2 = 0;
foreach ($textContentArray as &$value)
{
if (trim($value) != "")
{
$counter2++;
$string = preg_replace('/\s+/', ';', $content);
$test = explode(';', $string);
var_dump($string);
echo $ string给了我
1stText2ndText3Text4Text;5Text;6Text
而var_dump:string(2) "1stText" string(18) "2ndText" string(3) "3Text" string(16) "4Text"
4Text(4thText,5thText,6thText)由三个单词组成,所以在它们之间,字符“;”添加,但在文本节点之间 - 不是。
我尝试了很多我在这里找到的变体,简单的str_replace在这里不起作用。当我从表中复制字符串时,也许这就是问题?但是,为什么我不能单独将它保存在数组中?
答案 0 :(得分:0)
尝试使用单个空格从字符串中删除额外空格。然后尝试用;
字符替换该单个空格,最后爆炸,因为你希望获得最终的数组。
$str = preg_replace( "/\s+/", " ", $content );
#replaced multiple space with single space
$str = "1stText 2ndText 3rdText 4thText, 5thText, 6thText,";
$re = "/\\s+/m";
$subst = ";";
$result = preg_replace($re, $subst, $str);
$final=explode(';',$result);
echo '<pre>';
print_r($final) ;
echo '</pre>';
编辑: print_r(array_map('trim',explode(";",$result)));