我通过一个例子来解释我的问题:
示例:
(英文版)
$str = '1 healthy, fine, sound 2 tip-top, fit, robust, sturdy & 1 substandard, poor';
我想要这个输出:
- healthy, fine, sound
- tip-top, fit, robust, sturdy
&
- substandard, poor
(波斯语版) - 从右侧开始
$str ='1 خشكاندن، خشكانيدن 2رطوبتزدايي كردن، نمزدايي كردن & تر کردن';
我想要这个输出:
- خشكاندن، خشكانيدن
- رطوبتزدايي كردن، نمزدايي كردن
&
تر کردن
我知道,在这个例子中1
真的很模糊。但实际上它是右边的第一个角色。但是在SO中,因为没有正确的波斯方向,1
在左边。
注意:也许没有数字,甚至没有&
。在这种情况下,我不想要任何改变..!
$str = 'healthy, fine, sound, tip-top'; // I want this: healthy, fine, sound, tip-top
$str = 'healthy, fine, sound & poor'; /* I want this: healthy, fine, sound
&
poor
*/
我可以使用多个str_replace()
来做到这一点。但我想知道,我可以使用REGEX吗?
答案 0 :(得分:3)
此脚本适用于英语和英语。波斯变种。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Check SQL Server Connection</title>
</head>
<body>
<?php
$serverName = "IT90334\SQLEXPRESS";
$connectionInfo = array('Database' => 'AdventureWorks');
$conn = sqlsrv_connect($serverName, $connectionInfo);
if ($conn) {
echo "Connection Established.<br />";
} else {
echo "Something went wrong while connecting to MSSQL.<br />";
die(print_r(sqlsrv_errors(), true));
}
$query = "SELECT Name FROM production.Location"; -- HERE
$result = sqlsrv_query($conn, $query)
or die('An error has occurred');
$rowcount = sqlsrv_num_rows($result);
if($rowcount === FALSE){
echo "failure";
}
else {
echo $rowcount;
}
if($result === FALSE){
die(print_r(sqlsrv_errors(), true));
}
else {
echo "Results returned. <br />"; -- HERE
}
sqlsrv_close($conn);
?>
</body>
</html>
答案 1 :(得分:1)
我没有测试过Persian变体,因为我没有使用RTL脚本的经验,但它应该适用于英语示例。
// first let's put all the numbers to a new line
$digit_split_str = preg_replace('/(?<!^)(?=\d)/', "\n", $str);
// then ampersands
$ampersand_split_str = preg_replace('/(?<!^)&/', "\n&\n", $digit_split_str);
// then let's replace the numbers at the start of the string with dashes
$dashed_str = preg_replace('/^\d+/m', "- ", $ampersand_split_str);
编辑:在&符号和换行符周围固定角落案例......