如果在qotes内的名称的开头或结尾显示空格,我想删除空格。让我解释一下例子:
这是我的结果:
“HAIRDRESSER PERSON 1”第一人称企业
“头发工作室”第二人称S.P
“理发师3” - PERSON 3 S.P.
这就是我想要实现的目标:
“HAIRDRESSER PERSON 1”第一人称企业
“头发工作室”第二人称S.P
“理发师3” - PERSON 3 S.P.
这是我正在处理的代码:
$data[$num]['title'] = preg_replace(????????, "",$row->find('td',1)->plaintext);
如果您有更好的解决方案,那么preg_replace我会打开它。 提前谢谢你们。
答案 0 :(得分:2)
您可以将preg_replace
或preg_replace_callback
与trim
功能结合使用。
echo preg_replace_callback('~"(.*?)"~', function($matches) {
return '"' . trim($matches[1]) . '"';
}, '"HAIRDRESSER PERSON 1" Person one businesses');
输出:
"理发师1"人员一个企业
echo preg_replace('~"\h*(.*?)\h*"~', '"$1"', '"HAIRDRESSER PERSON 1" Person one businesses');
输出:
"理发师1"人员一个企业
\h*
是"
和下一个"
之间的任意数量的水平空格。 Regex101演示:https://regex101.com/r/mG2eG9/1
除非您想进一步操纵引用的数据,否则此处可能不需要preg_replace_callback
。
答案 1 :(得分:2)
仅搜索需要修剪的引用文本是不安全的(例如:"abcd" efgh " ijkl "
使用此方法和天真模式可能会出现问题。)
一种可能的方法是搜索所有引用的部分并使用preg_replace_callback
修剪它们:
$data[$num]['title'] = preg_replace_callback('~"([^"]*)"~', function ($m) {
return '"' . trim($m[1]) . '"'; }, $row->find('td', 1)->plaintext);
这种方式的优点是使用的模式非常简单。
您也可以避免使用preg_replace_callback
但需要更复杂的模式:
$data[$num]['title'] = preg_replace('~"\s*+([^\s"]*(?:\s+[^\s"]+)*+)\s*"~', '"$1"', $row->find('td', 1)->plaintext);
请注意,这两种模式假设引号是平衡的,引用的部分不包含转义引号。
答案 2 :(得分:2)
我在javascript中使用了以下reg表达式,它可以正常工作
replace(/(\"\s+)|(\s+\")/g,"\"")
答案 3 :(得分:1)
>>> for indexTag in (0, 1):
... print 'indexTag:', indexTag
... print 'boolean not:', not indexTag
... print 'subtraction:', 1 - indexTag
... print 'conditional expression:', 0 if indexTag else 1
... print
...
indexTag: 0
boolean not: True
subtraction: 1
conditional expression: 1
indexTag: 1
boolean not: False
subtraction: 0
conditional expression: 0
返回
$strings = array
(
'" HAIRDRESSER PERSON 1" Person one businesses',
'" HAIR STUDIO " Person two S.P.',
'" HAIRDRESSER PERSON 3 " - PERSON 3 S.P'
);
foreach($strings as $string) {
var_dump($string);
$string = preg_replace_callback('/"(.*)"/i', function($match) { return sprintf('"%s"', trim($match[1])); }, $string);
var_dump($string);
}
答案 4 :(得分:1)
一个简单的解决方案就是欺骗它。
str_replace('" ','"',$string);