DEMO 对于这个函数,你可以使用 url 获取标题名称。
对于这个功能,您可以使用 url 获取标题名称
<?php
function page_title($url) {
$fp = file_get_contents($url);
if (!$fp)
return null;
$res = preg_match("/<title>(.*)<\/title>/siU", $fp, $title_matches);
if (!$res)
return null;
// Clean up title: remove EOL's and excessive whitespace.
$title = preg_replace('/\s+/', ' ', $title_matches[1]);
$title = trim($title);
return $title;
}
print page_title("https://stackoverflow.com");
?>
输出:Stack Overflow - 开发人员学习、分享和建立职业生涯的地方
LARAVEL 代码
HTML 代码
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.16.0/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/css/toastr.min.css">
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/toastr.js/latest/js/toastr.min.js"></script>
<form method="POST" action="{{ route('storeCompany') }}" id="websiteForm">
{{ csrf_field() }}
<label>{{ __('Website URL') }}</label>
<input type="text" name="url" value="{{ old('url') }}" class="form-control url" required="required">
<label>{{ __('Site Title') }}</label>
<input type="text" name="title" value="{{ old('name') }}" class="form-control title"/>
<input type="submit" name="sbNewReviewItem" class="btn btn-block btn-primary clssubmit" value="{{ __('Submit') }}">
</form>
路线代码
Route::post('changestatus', ['as' => 'changestatus', 'uses' => 'YourControllerName@changestatus']);
Route::post('checktitle', ['as' => 'checktitle', 'uses' => 'YourControllerName@checktitle']);
控制器代码
public function checktitle(Request $request)
{
try {
$data = self::page_title($request->val);
$arr = array("status" => 200, "msg" => 'success',"result" => $data);
} catch (\Illuminate\Database\QueryException $ex) {
$msg = 'Something went wrong.';
if (isset($ex->errorInfo[2])) {
$msg = $ex->errorInfo[2];
}
$arr = array("status" => 400, "msg" => $msg, "result" => array());
} catch (Exception $ex) {
$msg = 'Something went wrong.';
if (isset($ex->errorInfo[2])) {
$msg = $ex->errorInfo[2];
}
$arr = array("status" => 400, "msg" => $msg, "result" => array());
}
return \Response::json($arr);
}
private function page_title($url) {
$fp = file_get_contents($url);
if (!$fp)
return null;
$res = preg_match("/<title>(.*)<\/title>/siU", $fp, $title_matches);
if (!$res)
return null;
// Clean up title: remove EOL's and excessive whitespace.
$title = preg_replace('/\s+/', ' ', $title_matches[1]);
$title = trim($title);
return $title;
}
Ajax 代码
$('body').on('keyup', '.url', function (e) {
var val= $( ".url" ).val( );
e.preventDefault();
$.ajax({
url: "{{ route('checktitle')}}", // write your route path
headers: {
'X-CSRF-TOKEN': '{{ csrf_token() }}'
},
data: {val : val},
type: 'POST',
beforeSend: function () {
$('.clssubmit').prop("disabled", true);
},
success: function (data) {
if (data.status == 400) {
$('.submitspinner').html('');
toastr.error(data.msg)
}
if (data.status == 200) {
$('.clssubmit').prop("disabled", false);
$( ".title" ).val(data.result);
toastr.success(data.msg)
}
},
});
});