正则表达式noob听到。通过PHP和preg_replace()
...
我正在努力做到这一点。
id="New York State"
进入这个。
id="New_York_State"
但不是这个。
id="New_York_State"_class="United_States"
我所有的尝试都很糟糕!
我已经阅读了几个教程,但是我仍然在使用正确的语法制定有用的模式时遇到很多麻烦。
请拜托,请用你的答案包含正则表达式的说明!此外,如果您对此感到满意,那么非常感谢任何指向好的 PHP正则表达式教程或文章的链接。谢谢!
答案 0 :(得分:4)
使用SimpleXMLElement
header('Content-Type:text/plain');
$xml = simplexml_load_file('log.svg', "SimpleXMLElement");
recursiveReplace($xml);
echo $xml->asXML();
使用的功能
function recursiveReplace(&$xml) {
foreach($xml as $k => $value) {
foreach($xml->attributes() as $n => $d) {
$xml[$n] = preg_replace('/\s+/', '_', $d);
}
recursiveReplace($value);
}
}
答案 1 :(得分:3)
极 错误解决方案:
$string = 'blabla id="New_York_State" class="United_States" blabla';
$new_string = preg_replace_callback('#\"([^"]*)\"#', function($m){
return('"'. str_replace(' ', '_', $m[1]) .'"');
}, $string);
echo $new_string;
<强>输出:强>
blabla id="New_York_State" class="United_States" blabla
仅允许双引号后面的id=
和class=
:
$string = 'blabla id="New_York_State" class="United_States" blabla "this won\'t get underscored" yaaaay';
$new_string = preg_replace_callback('#(?<=id=|class=)\"([^"]*)\"#', function($m){
return('"'. str_replace(' ', '_', $m[1]) .'"');
}, $string);
echo $new_string;
<强>输出:强>
blabla id="New_York_State" class="United_States" blabla "this won't get underscored" yaaaay
答案 2 :(得分:0)
有一个名为str_replace
的函数。
您的代码将是这样的:
$ id = str_replace(“”,“_”,$ id); 或者更好$ id = str_replace(“纽约州”,“New_York_State”,$ id);