嗯...如何在调用preg_replace时使用变量?
这不起作用:
foreach($numarray as $num => $text)
{
$patterns[] = '/<ces>(.*?)\+$num(.*?)<\/ces>/';
$replacements[] = '<ces>$1<$text/>$2</ces>';
}
Run Code Online (Sandbox Code Playgroud)
是的,$num前面是一个加号.是的,我想" tag the $num as <$text/>".
我试图在HTML文本块中提取图像的第一个src属性,如下所示:
Lorem ipsum <img src="http://example.com/img.jpg" />consequat.
Run Code Online (Sandbox Code Playgroud)
我创建正则表达式以匹配src属性没有问题,但是如何返回第一个匹配的src属性,而不是替换它?
从倾注PHP手册开始,似乎preg_filter()可以解决问题,但我不能依赖于PHP> 5.3的最终用户.
所有其他PHP正则表达式函数似乎都是preg_match()的变体,返回一个布尔值,或preg_replace,它用某些东西替换匹配.有没有一种直接的方法来返回 PHP中的正则表达式匹配?
我正在从php过渡到ruby,我试图在ruby中找出php命令preg_match_all和preg_replace的同源性.
非常感谢!
我想在PHP中使用正则表达式来查找所有HTML实体,例如"<br /> <br /> ..etc. "为了从长字符串中删除它们.
我正在使用一个函数从字符串中删除特殊字符.
function clean($string) {
$string = str_replace('', '-', $string); // Replaces all spaces with hyphens.
return preg_replace('/[^A-Za-z0-9\-]/', '', $string); // Removes special chars.
}
Run Code Online (Sandbox Code Playgroud)
这是测试用例
echo clean('a|"bc!@£de^&$f g');
Will output: abcdef-g
Run Code Online (Sandbox Code Playgroud)
参考SO答案.问题是如果'是我的字符串中的最后一个字符,就像我America'从excel文件中获取一个字符串,如果我把它放在这个函数中,它就不会逃脱'.当第一个和最后一个字符是'
我在下面有以下数据{n}代表一个占位符.
{n}{n}A{n}{n}A{n}
{n}A{n}{n}{n}{n}A
{n}{n}A{n}A{n}{n}
{n}{n}{n}A{n}A{n}B
{n}A{n}{n}B{n}{n}
A{n}B{n}{n}{n}{n}
Run Code Online (Sandbox Code Playgroud)
我想用两个A字符替换占位符的每个实例,例如字母C.我为此编写了以下正则表达式,我正在使用preg_replace函数.
$str = preg_replace('~(?<=A)(\{n\})*(?=A)~', 'C', $str);
Run Code Online (Sandbox Code Playgroud)
问题是它将两个A之间的所有实例替换为一个C.我怎样才能修复我的正则表达式或preg_replace调用以替换占位符的每个单独实例C?
这应该是我的输出.
{n}{n}ACCA{n}
{n}ACCCCA
{n}{n}ACA{n}{n}
{n}{n}{n}ACA{n}B
{n}A{n}{n}B{n}{n}
A{n}B{n}{n}{n}{n}
Run Code Online (Sandbox Code Playgroud)
但目前它输出了这个.
{n}{n}ACA{n}
{n}ACA
{n}{n}ACA{n}{n}
{n}{n}{n}ACA{n}B
{n}A{n}{n}B{n}{n}
A{n}B{n}{n}{n}{n}
Run Code Online (Sandbox Code Playgroud) 使用PHP,我想对密码使用preg_replace()过滤器,以便密码可用的唯一字符是US ASCII typable,减去控制代码和NULL.
什么是RegEx来实现我可以插入preg_replace()的那个?
编辑:
我被建议编辑这个问题,因为我现在"得到它"并且不会做这种非常不受欢迎的技术并且允许任何可打字的字符,即使是我可能没有在键盘上的字符,只要它们不是控制代码.
我有这个代码:
$count = 0;
preg_replace('/test/', 'test'. $count, $content,-1,$count);
Run Code Online (Sandbox Code Playgroud)
对于每次替换,我获得test0.
我想得到test0,test1,test2等.
当我通过此函数运行包含双引号的短语时,它用quot替换引号.
我想完全删除它们(也是单引号).我怎样才能改变这个功能呢?
function string_sanitize($s) {
$result = preg_replace("/[^a-zA-Z0-9]+/", "", $s);
return $result;
}
Run Code Online (Sandbox Code Playgroud)
更新:
Example 1: This is 'the' first example
returns: Thisis030the039firstexample
Errors: Warning: preg_match_all() [function.preg-match-all]: Unknown modifier '0' in C
Example 2: This is my "second" example
returns: Thisismyquotsecondquotexample
Errors: Invalid express in Xpath
Run Code Online (Sandbox Code Playgroud) 我现在有一个方法将我的驼峰案例字符串转换为蛇案例,但它分为三个调用preg_replace():
public function camelToUnderscore($string, $us = "-")
{
// insert hyphen between any letter and the beginning of a numeric chain
$string = preg_replace('/([a-z]+)([0-9]+)/i', '$1'.$us.'$2', $string);
// insert hyphen between any lower-to-upper-case letter chain
$string = preg_replace('/([a-z]+)([A-Z]+)/', '$1'.$us.'$2', $string);
// insert hyphen between the end of a numeric chain and the beginning of an alpha chain
$string = preg_replace('/([0-9]+)([a-z]+)/i', '$1'.$us.'$2', $string);
// Lowercase
$string = strtolower($string);
return $string;
}
Run Code Online (Sandbox Code Playgroud)
我编写了测试来验证其准确性,并且它可以正常使用以下输入数组(array('input' => 'output')):
$test_values = [
'foo' …Run Code Online (Sandbox Code Playgroud)