У меня эта проблема ... Интересно, есть ли у кого-нибудь идеи, как ее решить?PHP Explode by Uppercase letter?
Мне нужно разделить имя урока, имя учителя и класс.
Progr.al.Janek ManderÕ 405 Arv.võr.Tom KülaotsÕ 205
Progr.al. имя урока, Янек Мандер - имя учителя, а Õ 405 - класс. Arv.võr. Имя урока, Том Кюлаотс - имя учителя, а Õ 205 - класс.
Я должен разделить их, так что я могу идентифицировать их ... вероятно, в массив
info[0] = "Progr.al."
info[1] = "Janek Mander"
info[2] = "Õ 405"
Теперь у меня есть эта идея ... если я могу обнаружить заглавную букву и заменить эту строку с и # {uppercaseletter }, тогда я могу взорвать его ... Õ 405, я могу взорваться на Õ, поскольку у каждого класса есть Õ перед ними.
Well Progrl.al.Janek ManderÕ 405 ... есть только три заглавных буквы ... и имя учителя всегда имеет вторую заглавную букву ... есть ли какой-либо способ, который я мог бы использовать это для моего пособия или делать мне нужно переписать сценарий dom?
Весь код до сих пор ...
<!doctype html>
<html>
<head>
<title>Ilus tunniplaan</title>
<style>
.tund
{
width: 140px;
width: 405px;
border: 1px solid black;
}
.
</style>
</head>
<body>
<?php
ini_set('error_reporting', E_ALL | E_STRICT);
ini_set('display_errors', 'Off');
ini_set('log_errors', 'Off');
function grab_page($site)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_TIMEOUT, 40);
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
curl_setopt($ch, CURLOPT_URL, $site);
ob_start();
return curl_exec ($ch);
ob_end_clean();
curl_close ($ch);
}
$html = grab_page("http://web.ametikool.ee/tunniplaan/11.%20n%e4dal%2008.11%20-%2013.11/");
$dom = new domDocument;
/*** load the html into the object ***/
$dom->loadHTML($html);
/*** the table by its tag name ***/
$tables = $dom->getElementsByTagName('table');
/*** get all rows from the table ***/
$rows = $tables->item(0)->getElementsByTagName('tr');
/*** loop over the table rows ***/
foreach ($rows as $row)
{
$id = $id + 1;
if($id > 16)
{
/*** get each column by tag name ***/
$cols = $row->getElementsByTagName('td');
/*** echo the values ***/
for ($counter = 0; $counter <= 9; $counter += 1)
{
$phrase = $cols->item($counter)->nodeValue;
echo $phrase . "<br/>\n";
}
}
}
?>
</body>
</html>
Лично я предложил бы положить данные вместе в более организованной форме в первую очередь, опираясь на регулярное выражение и [ 'preg_split()'] (http://www.php.net/manual/en/function.preg-split.php) (вроде 'explode()' с регулярными выражениями) в лучшем случае является хрупким. –
Ну, прежде чем dev-null-dweller дал мне решение, я использовал это: $ TestStr = "Tom Kulaots"; $ s = preg_replace ('/ ([^ \ s]) ([A-Z]) /', '\ 1 # \ 2', $ TestStr); $ info = explode ("#", $ s); $ TestStr = $ info [1]; $ info = explode ("Õ", $ TestStr); $ name = $ info [0]; –