仅在标记中用下划线替换空格

时间:2015-01-26 16:01:26

标签: php xml preg-replace

数据:<product name_here>Product A</product_name here>

我试试这个$replace = preg_replace('/\s+/', '_', $replace);

但它显示不正确:<product_name_here>Product_A</product_name_here>

仅在标记名称内仅用下划线替换空格,无需更改值

中的空格

我想这样:<product_name_here>Product A</product_name_here>

请帮忙。

2 个答案:

答案 0 :(得分:1)

怎么样?

$before = '<product name_here>Product A</product_name here>';
$after = preg_replace('/(<[^>]*)\s+([^<]*>)/', '$1_$2', $before);
echo $after;

这应该给出

<product_name_here>Product A</product_name_here>

\ s之前和之后的部分+指定您不希望标记配对之外的空格,而只是包含在开始标记<和结束标记>之间的空格。 $1$2替换在替换的空格之前和之后的字符串中。

答案 1 :(得分:0)

你能举一个更好的例子吗?

根据我的理解,你想要这个:

您有:产品A

您想:产品A

这是对的吗?

如果是这种情况,你需要做的就是str_replace('','_',$ product)

抱歉我的英语不好。