我想知道如何将给定的字符串转换为指定的数组:
串
all ("hi there \(option\)", (this, that), other) another
Run Code Online (Sandbox Code Playgroud)
想要的结果(数组)
[0] => all,
[1] => Array(
[0] => "hi there \(option\)",
[1] => Array(
[0] => this,
[1] => that
),
[2] => other
),
[2] => another
Run Code Online (Sandbox Code Playgroud)
这用于我在PHP上制作的一种控制台.我尝试使用preg_match_all但是,我不知道如何在括号内找到括号以"在数组中创建数组".
编辑
应将示例中未指定的所有其他字符视为String.
编辑2
我忘了提到括号外的所有参数都应该被space字符检测到.
我想在我的网站上添加一项功能,让用户搜索文本RegEx.但是,让用户做这样的事情是否安全?
preg_match('/' . $user_input_regex . '/', $subject);
Run Code Online (Sandbox Code Playgroud) 我似乎把自己与preg_match正则表达式混淆了,我正在做,所以新鲜的眼睛和帮助将不胜感激.
我目前的正则表达式如下:
/<!--menu:start:\(([0-9])\,([0-9])\)-->(.*?)<!--menu:end-->/se
Run Code Online (Sandbox Code Playgroud)
我想要输入数字和冒号,例如:(1,4)可选,所以它匹配:
<!--menu:start--><!--menu:end-->
Run Code Online (Sandbox Code Playgroud)
要么
<!--menu:start:(0,3)--><!--menu:end-->
Run Code Online (Sandbox Code Playgroud) 我想检查字符串是否是文件名(名称为DOT ext).
文件名不能包含 / ? * : ; { } \
你能建议我在preg_match()中使用正则表达式吗?
例:
$string = "This is some text written on 2010-07-18.";
preg_match('|(?<date>\d\d\d\d-\d\d-\d\d)|i', $string, $arr_result);
print_r($arr_result);
Run Code Online (Sandbox Code Playgroud)
返回:
Array
(
[0] => 2010-07-18
[date] => 2010-07-18
[1] => 2010-07-18
)
Run Code Online (Sandbox Code Playgroud)
但我希望它是:
Array
(
[date] => 2010-07-18
)
Run Code Online (Sandbox Code Playgroud)
在PHP的PDO对象中,有一个选项可以通过删除这些重复的编号值来过滤数据库中的结果:PDO::FETCH_ASSOC.但我还没有看到PHP中PCRE函数的类似修饰符.
我正在制作一个匹配正则表达式的日期,而且一切都很顺利,到目前为止我已经得到了这个:
"/(?:[0-3])?[0-9]-(?:[0-1])?[0-9]-(?:20)[0-1][0-9]/"
Run Code Online (Sandbox Code Playgroud)
它(希望)将匹配单个或两位数的日期和月份,以及21世纪的两倍或四倍数字年份.到目前为止,一些试验和错误让我受益匪浅.
但是,关于这些结果,我有两个简单的问题:
(?: )对此有什么简单的解释?显然,这是一个不匹配的群体.但是之后...
结尾?是什么?例如(? )?
我需要在php地址中使用正则表达式进行匹配,例如:
邮政编码可包括字母和/或数字.
这是我试过的:
print_r(preg_match('/^([0-9]+)\s([a-z]+)\s([a-z]+)\s([a-z]+)\s([a-z0-9]+)$/i', $t, $m));
print_r($m);
Run Code Online (Sandbox Code Playgroud)
它输出:
Array
(
[0] => 123 asd asd asd 123
[1] => 123
[2] => street
[3] => city
[4] => state
[5] => zip
)
Run Code Online (Sandbox Code Playgroud)
这只能使用空格.当我有一个逗号它不起作用,它会导致一个空数组.
我该怎么办还包括逗号?
我正在尝试创建一个函数,将给定字符串中每个出现的纯文本电子邮件地址转换为它的html化版本.
假设我有以下代码,htmlizeEmails我正在寻找的功能在哪里:
$str = "Send me an email to bob@example.com.";
echo htmlizeEmails($str); // Echoes "Send me an email to <a href="mailto:bob@example.com">bob@example.com</a>."
Run Code Online (Sandbox Code Playgroud)
如果可能,我希望此功能使用该filter_var功能来检查电子邮件是否有效.
有谁知道如何做到这一点?谢谢!
感谢您的答案,我用令人震惊的正则表达式匹配潜在的电子邮件地址,然后,只有当filter_var验证它,它就会被取代.
function htmlizeEmails($text)
preg_match_all('/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,6})/', $text, $potentialEmails, PREG_SET_ORDER);
$potentialEmailsCount = count($potentialEmails);
for ($i = 0; $i < $potentialEmailsCount; $i++) {
if (filter_var($potentialEmails[$i][0], FILTER_VALIDATE_EMAIL)) {
$text = str_replace($potentialEmails[$i][0], '<a href="mailto:' . $potentialEmails[$i][0] .'">' . $potentialEmails[$i][0] .'</a>', $text);
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试获取字符串hello world.
这是我到目前为止所得到的:
$file = "1232#hello world#";
preg_match("#1232\#(.*)\##", $file, $match)
Run Code Online (Sandbox Code Playgroud) 我有这种形式的内容
$content ="<p>This is a sample text where {123456} and {7894560} ['These are samples']{145789}</p>";
Run Code Online (Sandbox Code Playgroud)
我需要数组中花括号之间的所有值,如下所示:
array("0"=>"123456","1"=>"7894560","2"=>"145789")
Run Code Online (Sandbox Code Playgroud)
我试过这段代码:
<?php
preg_match_all("/\{.*}\/s", $content, $matches);
?>
Run Code Online (Sandbox Code Playgroud)
但我在这里得到的值从第一个大括号到内容中找到的最后一个.如何以上述格式获取数组?我知道我使用的模式是错误的.如何获得上面显示的所需输出?
php ×10
preg-match ×10
regex ×9
preg-replace ×2
arrays ×1
date ×1
email ×1
explode ×1
match ×1
user-input ×1
validation ×1